/* Nama File : bidang.h                              */
/* Deskripsi : File header dari class Bidang         */
/* Anggota Kelompok : Dekha Anggareska 13510050		*/
/*                    Fadhil Muhtadin 13510070		*/
/*                    Muhammad Iqbal 13510064		*/
/*                    Yulius Nainggolan 13510090	*/

#ifndef bidang_h
#define bidang_h

#include "../../cell/cell/cell.h"

#include <iostream>
using namespace std;

class Bidang{
	/* Empat Sekawan */
	public:
	Bidang();
	/* Konstruktor Bidang */
	/* I.S. Bidang belum tercipta */
	/* F.S. Bidang tercipta */
	Bidang(int);
	/* Konstruktor Bidang dengan parameter */
	/* I.S. Bidang belum tercipta */
	/* F.S. Bidang tercipta */
	Bidang(const Bidang&);
	/* CCtor Bidang */
	/* I.S. Bidang terdefinisi */
	/* F.S. Bidang baru tercipta sebagai kopi Bidang sebelumnya */
	virtual ~Bidang() = 0;
	/* Destruktor Bidang */
	/* I.S. Bidang terdefinisi */
	/* F.S. Bidang dimusnahkan */
	Bidang& operator=(const Bidang&);
	/* operator assignment Bidang */
	/* I.S. Bidang input terdefinisi */
	/* F.S. Bidang output sama dengan input dengan alokasi memori tersendiri */
   
	/* Getter dan Setter */
	
	int getSudut() const;
	/* Mendapatkan nSudut dari Bidang */
	
	void setSudut(int);
	/* Melakukan Set terhadap nSudut dari Bidang */
	/* I.S. Bidang terkonstruksi */
	/* F.S. Data nSudut bernilai n */
   
    // friend int isSegiTiga(Point, Point, Point);
	/* Mengembalikan satu bila sebuah bidang adalah segitiga */
	
	// friend int isSegiEmpat(Point, Point, Point, Point);
	/* Mengembalikan satu bila sebuah bidang adalah persegi  */

	virtual int isPointInside(Cell) = 0; //pure virtual function untuk mengecek apakah titik berada dalam bidang
	
	virtual void setCorner(int, Cell) = 0; //pure virtual function untuk mengeset nilai titik sudut khusus untuk class Polygon

	// void eraseBidang();
	/* Mengubah semua karakter dalam bidang menjadi blank */
	/* I.S. Semua sel dalam bidang berisi karakter yang didefinisikan */
	/* F.S. Semua karakter diisi dengan karakter blank */	
	
	// void GrahamScan();
	/* Melakukan sorting sehingga semua titik batas terurut secara counter clockwise */
	/* I.S. Bidang terdefinisi dengan array of Cell belum terurut */
	/* F.S. Array of Cell terurut counter clockwise */	
	
	
	
	protected:
	//data member
	int nSudut; // Jumlah sudut
};
#endif
